<?php
/**
 * DatabaseManager
 *
 * @author Timo Prüße, Andre Biel
 */
class DatabaseManager
{
    // TODO: Daten in "Settings-Datei" auslagern
    //       Weitere Settings wie Seitentitel in DB
    private $host, $database, $user, $password;
    private $instance = null; // Datenbankinstanz

    /*
     * Initiiert die Verbindungsdaten.
     */
    function __construct()
    {        
        $settings = parse_ini_file('db_config_ini.php');

        $this->host     = $settings['host'];
        $this->database = $settings['database'];
        $this->user     = $settings['user'];
        $this->password = $settings['password'];
    }

    /*
     * Beim Zerstören des Objektes wird 
     * ggf. noch die Verbindung geschlossen.
     */
    function __destruct()
    {
        $this->disconnect();
    }

    /*
     * Verbinden mit der Datenbank,
     * falls nicht bereits verbunden.
     */
    public function connect()
    {
        if ($this->instance == null)
        {
            $this->instance = new MySQLi($this->host, $this->user, $this->password, $this->database);
        } 
    }
    
    /*
     * Trennen der Datenbankverbindung,
     * wenn noch eine besteht.
     */
    public function disconnect()
    {
        if ($this->instance != null)
        {
            $this->instance->close();
            $this->instance = null;
        }
    }
    
    /*
     * Führt ein SQL Statement aus und liefert das Objekt zurück.
     * Ist ein Statement ungültig wird FALSE zurückgegeben.
     */
    public function execSQL($sql_string)
    {
        $result = null;
        if ($sql_string != '')
        {
            if ($this->instance == null)
            {
                $this->connect();
            }   
            try
            {
                $output = $this->instance->query($sql_string, MYSQLI_USE_RESULT);
                if(!$output instanceof mysqli_result)
                {
                    $result = false; // Kein gültiges Resultset
                }
                else
                {
                    $result = array();
                    while($data = $output->fetch_object())
                    {
                        $result[] = $data;
                    }
                }
            }
            catch(Exception $ex)
            {
                echo $ex;
            }
        }   
        return $result;
    }
}
?>
